package main

import (
	"fmt"
	"net"
	"net/rpc/jsonrpc"
)

// 定义类对象
type World struct {
}

// 绑定类方法
// 参数1：客户端传入值，参数2：服务端传出参数(用指针)
func (this *World) HelloWorld(name string, resp *string) error {
	*resp = name + " 你好!"
	return nil
}

func main() {
	// 1、注册rpc服务，绑定对象方法
	// rpc.RegisterName("服务名", 类对象)
	// err := rpc.RegisterName("hello", new(World))
	// if err != nil {
	// 	fmt.Println("注册rpc服务失败!", err)
	// 	return
	// }

	RegisterService(new(World))

	// 2、设置监听
	listener, err := net.Listen("tcp", "127.0.0.1:8088")
	if err != nil {
		fmt.Println("net.Listen err", err)
		return
	}
	defer listener.Close()
	fmt.Println("开始监听。。。。")
	// 3、建立连接
	conn, err := listener.Accept()
	if err != nil {
		fmt.Println("listener.Accept err", err)
		return
	}
	defer conn.Close()
	fmt.Println("连接成功。。。。")
	// 4、绑定服务
	// rpc.ServeConn(conn)
	jsonrpc.ServeConn(conn) // json版
}
